#ifndef SINGLETON_H
#define SINGLETON_H

class Uncopyable
{
protected:
	Uncopyable() {}
private:
	Uncopyable(const Uncopyable&);
	Uncopyable& operator= (const Uncopyable&);
};

template <class T>
class Singleton
{
public:
	static T* Instance()
	{
		static T myT;
		return &myT;
	}
private:
	Singleton(){}
};

#endif SINGLETON_H